ASP.NET Core অ্যাপ্লিকেশনে Controllers হলো এমন একটি মৌলিক অংশ যা Model-View-Controller (MVC) আর্কিটেকচারে ব্যবহৃত হয়। এটি অ্যাপ্লিকেশনের ব্যবসায়িক লজিক (Business Logic) পরিচালনা করে এবং ভিউ (View) এবং মডেল (Model) এর মধ্যে যোগাযোগ স্থাপন করে। Controller কেবলমাত্র ক্লায়েন্টের অনুরোধ গ্রহণ (Request) করে এবং সেই অনুযায়ী সঠিক রেসপন্স (Response) তৈরি করে।
অনুরোধের প্রসেসিং (Request Processing)
Controller মূলত ওয়েব অ্যাপ্লিকেশনের রিকোয়েস্ট গ্রহণ করে এবং তা প্রক্রিয়া করে। ইউজার যখন কোনো রিকোয়েস্ট পাঠায়, Controller সেই রিকোয়েস্টে আনা তথ্য ধরে নিয়ে অ্যাপ্লিকেশন লজিক বা ডেটাবেসের সাথে যোগাযোগ করতে পারে, এরপর সঠিক রেসপন্স প্রদান করে।
অ্যাকশন মেথড (Action Methods)
Controller সাধারণত এক বা একাধিক Action Methods ধারণ করে, যেগুলি রিকোয়েস্টের ভিত্তিতে নির্দিষ্ট কাজ সম্পাদন করে। প্রতিটি অ্যাকশন মেথড সাধারণত একটি নির্দিষ্ট HTTP রিকোয়েস্টের জন্য যেমন GET, POST, PUT, DELETE ইত্যাদি এর মাধ্যমে কার্যকর হয়।
উদাহরণস্বরূপ, যদি আপনি /home/index
URL-এ যান, তবে Index অ্যাকশন মেথডটি সাধারণত সেই রিকোয়েস্টটি প্রক্রিয়া করবে এবং সংশ্লিষ্ট ভিউ বা ডেটা রিটার্ন করবে।
ডেটা ম্যানিপুলেশন এবং রেসপন্স প্রদান (Data Manipulation and Response)
Controller ডেটাবেসের সাথে যোগাযোগ করতে পারে এবং Model-এর সাহায্যে ডেটা ম্যানিপুলেট করতে পারে। এতে অ্যাকশন মেথড ডেটা নিয়ে ভিউ বা API রেসপন্স পাঠাতে পারে। এতে Model Binding এর মাধ্যমে ফর্ম ডেটা প্রক্রিয়া করা হয় এবং Model Validation এর মাধ্যমে ইনপুট ভ্যালিডেশন পরিচালনা করা হয়।
বিজনেস লজিক (Business Logic)
Controller এ বিজনেস লজিক রাখা হয়ে থাকে যা মডেল এবং ভিউয়ের মধ্যকার লিঙ্ক তৈরি করে। উদাহরণস্বরূপ, একজন ইউজারের লগইন চেক করা, শপিং কার্টের সামগ্রী আপডেট করা বা অর্থনৈতিক হিসাব করা এগুলি Controller-এ করা হয়।
রিডাইরেকশন এবং রাউটিং (Redirection and Routing)
Controller রিকোয়েস্ট প্রক্রিয়া করার পর, রিকোয়েস্টের ধরণ অনুযায়ী রিডাইরেকশন (Redirect) বা রাউটিং (Routing) করতে পারে। যেমন, ইউজার সফলভাবে লগইন করলে তাকে ড্যাশবোর্ডে রিডাইরেক্ট করা হতে পারে অথবা ডেটা সেভ করার পর ভিন্ন একটি পৃষ্ঠায় প্রেরণ করা হতে পারে।
1. Action Filters
Controller অ্যাকশনগুলোর উপর বিভিন্ন ফিল্টার প্রয়োগ করা যায়। এসব ফিল্টারগুলি রিকোয়েস্ট বা রেসপন্স প্রসেসের আগে, পরে বা এমনকি একটিভ করার আগেও প্রক্রিয়া চালাতে পারে। যেমন, Authorization Filter ব্যবহার করে শুধুমাত্র অনুমোদিত ইউজারদেরকে অ্যাকশন এক্সেস করার অনুমতি দেয়া হয়।
2. Dependency Injection (DI)
ASP.NET Core Controller-এ Dependency Injection ব্যবহার করে একাধিক সার্ভিস ইনজেক্ট করা যায়। যেমন, ডাটাবেস সার্ভিস বা রেপোজিটরি ক্লাস, যা অ্যাকশন মেথডগুলিতে ডেটা পরিচালনা করতে সহায়তা করে।
3. ViewResult এবং JSONResult
Controller অ্যাকশন মেথডের মাধ্যমে ViewResult বা JSONResult রিটার্ন করতে পারে। ViewResult সাধারণত HTML রেসপন্স তৈরি করে, যা ভিউতে প্রদর্শিত হয়, আর JSONResult JSON ডাটা রিটার্ন করে, যা API রেসপন্স হিসেবে ব্যবহার হয়।
public class HomeController : Controller
{
// GET: /Home/Index
public IActionResult Index()
{
var message = "Welcome to ASP.NET Core!";
return View("Index", message);
}
// POST: /Home/Submit
[HttpPost]
public IActionResult Submit(string data)
{
// ডেটা প্রক্রিয়া এবং প্রাসঙ্গিক লজিক
return RedirectToAction("Index");
}
}
উপরের কোডে, HomeController দুটি অ্যাকশন মেথড ধারণ করে:
Controller হল ASP.NET Core অ্যাপ্লিকেশনের মূল অংশ যা রিকোয়েস্ট প্রক্রিয়া, বিজনেস লজিক এবং ডেটাবেস ম্যানিপুলেশন পরিচালনা করে। এর মাধ্যমে মডেল, ভিউ এবং একশন মেথডের মধ্যে সঠিক সমন্বয় প্রতিষ্ঠিত হয়, যা ব্যবহারকারীর রিকোয়েস্ট অনুযায়ী সঠিক রেসপন্স প্রদান করে। এটি অ্যাপ্লিকেশনের কার্যকারিতা এবং কার্যকরী অভিজ্ঞতা উন্নত করতে সহায়ক।
common.read_more